package poo.figureSolide;

import poo.geometria.Disco;

public class Cilindro extends Disco implements FiguraSolida {

	private double altezza;

	public Cilindro(double raggio, double altezza) {
		super(raggio);
		if (altezza <= 0)
			throw new IllegalArgumentException();
		this.altezza = altezza;
	}

	public Cilindro(double x, double y, double raggio, double altezza) {
		super(x, y, raggio);
		if (altezza <= 0)
			throw new IllegalArgumentException();
		this.altezza = altezza;
	}

	public Cilindro(Disco d, double altezza) {
		super(d);
		if (altezza <= 0)
			throw new IllegalArgumentException();
		this.altezza = altezza;
	}

	public double area() {
		return areaTotale();
	}

	public double perimetro() {
		throw new UnsupportedOperationException();
	}

	@Override
	public double areaTotale() {
		return 2 * Math.PI * getRaggio() * getRaggio() + 2 * Math.PI
				* getRaggio() * altezza;
	}

	@Override
	public double areaLaterale() {
		return 2 * Math.PI * getRaggio() * altezza;
	}

	@Override
	public double areaDiBase() {
		return Math.PI * getRaggio() * getRaggio();
	}

	@Override
	public double volume() {
		return Math.PI * getRaggio() * getRaggio() * getRaggio() * altezza;
	}
	
	public String toString() {
		return "Cilindro " + super.toString();
	}

}
